-- -- Copyright 2016 The Cartographer Authors
-- --
-- -- Licensed under the Apache License, Version 2.0 (the "License");
-- -- you may not use this file except in compliance with the License.
-- -- You may obtain a copy of the License at
-- --
-- --      http://www.apache.org/licenses/LICENSE-2.0
-- --
-- -- Unless required by applicable law or agreed to in writing, software
-- -- distributed under the License is distributed on an "AS IS" BASIS,
-- -- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-- -- See the License for the specific language governing permissions and
-- -- limitations under the License.

-- -- /* Author: Darby Lim */

-- include "map_builder.lua"
-- include "trajectory_builder.lua"

-- options = {
--   map_builder = MAP_BUILDER,
--   trajectory_builder = TRAJECTORY_BUILDER,
--   map_frame = "map",
--   tracking_frame = "base_footprint",
--   published_frame = "odom",
--   odom_frame = "odom",
--   provide_odom_frame = false,
--   publish_frame_projected_to_2d = false,
--   use_odometry = true,
--   use_nav_sat = false,
--   use_landmarks = false,
--   num_laser_scans = 1,
--   num_multi_echo_laser_scans = 0,
--   num_subdivisions_per_laser_scan = 1,
--   num_point_clouds = 0,
--   lookup_transform_timeout_sec = 0.5,
--   submap_publish_period_sec = 0.3,
--   pose_publish_period_sec = 2e-2,
--   trajectory_publish_period_sec = 30e-3,
--   rangefinder_sampling_ratio = 1.,
--   odometry_sampling_ratio = 1.,
--   fixed_frame_pose_sampling_ratio = 1.,
--   imu_sampling_ratio = 0.,
--   landmarks_sampling_ratio = 1.,
-- }

-- -- 纯定位模式配置
-- POSE_GRAPH.optimize_every_n_nodes = 1
-- MAP_BUILDER.num_background_threads = 8
-- POSE_GRAPH.global_sampling_ratio = 0.003
-- POSE_GRAPH.constraint_builder.sampling_ratio = 0.3
-- POSE_GRAPH.constraint_builder.min_score = 0.65

-- MAP_BUILDER.use_trajectory_builder_2d = true

-- TRAJECTORY_BUILDER_2D = {
--   pure_localization = true,
--   submaps = {
--     num_range_data = 35
--   },
--   min_range = 0.05,
--   max_range = 25.,
--   missing_data_ray_length = 1.,
--   use_imu_data = false,
--   use_online_correlative_scan_matching = true,
--   real_time_correlative_scan_matcher = {
--     linear_search_window = 0.1,
--     translation_delta_cost_weight = 10.,
--     rotation_delta_cost_weight = 1e-1
--   }
-- }

-- POSE_GRAPH.optimization_problem.huber_scale = 1e2

-- return options

include "cartographer_tb3_main.lua"
TRAJECTORY_BUILDER_2D.use_imu_data = false  

-- 纯定位模式下的轨迹构建器配置
TRAJECTORY_BUILDER.pure_localization_trimmer = {
  -- 保留的最大子地图数量，较小的值可以减少内存使用
  max_submaps_to_keep = 3,
}

-- 位姿图优化配置
-- 每处理多少个节点进行一次优化，纯定位模式下可以适当增加以减少计算量
POSE_GRAPH.optimize_every_n_nodes = 20

return options